﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace 夜雀食堂TAG搜索器
{
    /// <summary>
    /// 对话记录.xaml 的交互逻辑
    /// </summary>
    public partial class 对话记录 : Window
    {
        string 路径 = "";
        public 对话记录()
        {
            InitializeComponent();
        }

        public void 更新对话内容()
        {
            if (File.Exists(@"C:\Users\" + System.Environment.UserName + @"\AppData\LocalLow\Epicomic\Touhou Mystia Izakaya\Player.log"))
            {
                路径 = @"C:\Users\" + System.Environment.UserName + @"\AppData\LocalLow\Epicomic\Touhou Mystia Izakaya\Player.log";

            }
            else { MessageBox.Show("无法找到日志文件，无法查看游戏对话记录"); this.Close(); }
            string 正则式 = "DialPann: Printing Dialog: (.*)";
            var 文本内容 = 读入文件_快速(路径, Encoding.UTF8);
            Regex 正则 = new Regex(正则式);
            var 匹配结果 = 正则.Matches(文本内容);
            StringBuilder 对话内容 = new StringBuilder();
            for (int i = 0; i < 匹配结果.Count; i++)
            {
                对话内容.AppendLine(匹配结果[i].Groups[1].Value.ToString());
            }
            记录.Text = 对话内容.ToString();
            记录.ScrollToEnd();
        }



        public static string 读入文件_快速(string 文件路径, Encoding 编码)
        {
            using (FileStream 文件流 = new FileStream(文件路径, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                int 文件大小 = (int)文件流.Length;
                byte[] 缓冲区 = new byte[文件大小];
                文件流.Read(缓冲区, 0, 缓冲区.Length);
                string 待输出文本 = System.Text.Encoding.UTF8.GetString(缓冲区);
                return 待输出文本;
            }

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            更新对话内容();
        }
    }
}
